Systems and methods for retrieving relevant information content while typing

ABSTRACT

Methods, systems, and apparatus, including computer programs stored on computer-readable media, for retrieving relevant information content while typing are disclosed. Upon identifying text being entered by a user into a text field of a typing-enabled application, one or more keywords may be determined that match the text. The matching keywords may be presented for selection. Upon receiving a selection of a keyword, an information card related to the selected keyword may be retrieved and presented. In addition to presenting the information card, information content associated with the information card may be inserted into the text field of the typing-enabled application.

RELATED APPLICATION(S)

This application claims priority to U.S. Provisional Application No.62/979,128 filed Feb. 20, 2020, the entire disclosure of which is herebyincorporated herein by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to retrieving relevantinformation content while typing text and, more particularly, totransferring the retrieved information content between differentapplications and sharing the retrieved information content with otherusers in a convenient and customized manner.

BACKGROUND

Databases often include information about many topics. Users oftenretrieve content by issuing a query, for example, using natural languageor using structured query language (SQL). As data analytics andretrieval techniques rapidly advance, data customization and exchangebetween users have also become an important part of data analyticsdelivery.

The present disclosure is directed to addressing one or more of thesechallenges. The background description provided herein is for thepurpose of generally presenting the context of the disclosure. Unlessotherwise indicated herein, the materials described in this section arenot prior art to the claims in this application and are not admitted tobe prior art, or suggestions of the prior art, by inclusion in thissection.

SUMMARY

In one embodiment, a computer-implemented method of retrieving relevantinformation content while typing may comprise: identifying, by anapplication extension of a first application, text being entered by auser into a text field of a second application; determining, by theapplication extension, one or more keywords in a keyword list that matchthe text; presenting, by the application extension, the one or morekeywords; receiving, by the application extension, a selection of akeyword from the one or more keywords; retrieving, by the firstapplication, an information card related to the selected keyword;presenting, by the first application, the information card; andinserting, by the second application, information content associatedwith the information card into the text field.

In one embodiment, a system may comprise: one or more processors; andone or more computer-readable media comprising instruction that, whenexecuted by the one or more processors, cause the one or more processorsto perform operations for retrieving relevant information content isprovided. The operations may comprise: identifying, by an applicationextension of a first application, text being entered by a user into atext field of a second application; determining, by the applicationextension, one or more keywords in a keyword list that match the text;presenting, by the application extension, the one or more keywords;receiving, by the application extension, a selection of a keyword fromthe one or more keywords; retrieving, by the first application, aninformation card related to the selected keyword; presenting, by thefirst application, the information card; and inserting, by the secondapplication, information content associated with the information cardinto the text field.

In one embodiment, one or more non-transitory computer-readable mediaare provided, which may store instructions that, when executed by one ormore processors, cause the one or more processors to perform operationsfor retrieving relevant information content. The operations maycomprise: identifying, by an application extension of a firstapplication, text being entered by a user into a text field of a secondapplication; determining, by the application extension, one or morekeywords in a keyword list that match the text; presenting, by theapplication extension, the one or more keywords; receiving, by theapplication extension, a selection of a keyword from the one or morekeywords; retrieving, by the first application, an information cardrelated to the selected keyword; presenting, by the first application,the information card; and inserting, by the second application,information content associated with the information card into the textfield.

Additional objects and advantages of the disclosed embodiments will beset forth in part in the description that follows, and in part will beapparent from the description, or may be learned by practice of thedisclosed embodiments. The objects and advantages of the disclosedembodiments will be realized and attained by means of the elements andcombinations particularly pointed out in the appended claims.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory onlyand are not restrictive of the disclosed embodiments, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate various exemplary embodiments andtogether with the description, serve to explain the principles of thedisclosed embodiments.

FIG. 1 is a diagram of an exemplary system and method capable ofgenerating and presenting customized information cards, according to oneaspect of the present disclosure.

FIG. 2 illustrates a user interface in a process of activating a smartkeyboard while using a typing-enabled application, according to oneaspect of the present disclosure.

FIG. 3 is a flowchart illustrating an exemplary method of retrieving aninformation card while typing text using a smart keyboard, according toone aspect of the present disclosure.

FIG. 4 shows sequential views of a user interface enabling text inputfor keyword identification, according to one aspect of the presentdisclosure.

FIG. 5 shows sequential views of a user interface enabling copying andpasting of an information card into a text field of a typing-enabledapplication, according to one aspect of the present disclosure.

FIGS. 6A-6B show flowcharts illustrating exemplary methods of appendingan information card into a text field of a typing-enabled application,according to one or more aspects of the present disclosure.

FIG. 7 shows sequential views of a user interface enabling copying andpasting of information content pertaining to one or more user-selectedsections of an information card, according to one aspect of the presentdisclosure.

FIG. 8 shows a flowchart illustrating an exemplary method of insertinginformation content into a text field of a typing-enabled applicationbased on a selection of one or more sections in an information card,according to one aspect of the present disclosure.

DETAILED DESCRIPTION

The following embodiments describe systems and methods for retrievingrelevant information content while typing text and, more particularly,for transferring the retrieved information content between differentapplications and sharing the retrieved information content with otherusers in a convenient and customized manner.

In the present disclosure, a computing system may run software thatmonitors conditions and operations of a computing device and detectswhen information content is relevant to the current context of thecomputing device. In response to detecting an appropriate context, thecomputing system may present an information card with content from adatabase, or a control allowing the user to access the information card.In many conventional systems, a user needs to submit a query, open orswitch to a specific application, or otherwise take steps to requestdesired information content. By contrast, the systems and methodsdiscussed in the present disclosure may allow information content to beprovided automatically, without requiring the user to manually requestand seek out the content, and/or without requiring the user to close orminimize an application and open another application to request and viewthe content. In many cases, the technique may allow database contentrelevant to a user's current task or activity to be provided, oftenwithout requiring the user to leave a current user interface. Forexample, as a user creates a message by typing text on a user interface,information content determined to be relevant to the message (i.e.,typed text) or a portion of the message may be made available on thecurrent user interface.

To that end, in some embodiments, a smart keyboard extension may beprovided to enable automatic detection of keywords within text enteredby the user. As the user is typing or entering text into a text field ofa typing-enabled application, a smart keyboard by which the user entersthe text may present keywords that match the text or a portion of thetext entered by the user, substantially in real-time. The user mayselect a keyword presented by the smart keyboard, and the keyword may beused to search for relevant information content such as, for example,information cards. In lieu of automatically determining keywords basedon user-entered text, the smart keyboard may also or alternatively allowthe user to manually provide a search keyword, which may be used toquery a database for relevant information cards. One or more informationcards that are returned as the results of the query may be presented tothe user for, e.g., inclusion in the text field. Once the user selectsan information card to include in the text field, the information cardmay be inserted into an appropriate location within the text field.Further, in lieu of appending the entire information card in the textfield, the user may select one or more portions of the information card,retrieve text strings pertaining to the selected portions of theinformation card, and include the retrieved text strings at anappropriate location within the text field. These functionalities may beprovided to the user with minimal disruption to the user's typingactivity. For example, the functionalities may be provided withoutrequiring the user to close out of the typing-enabled application, opena search application, perform the search within the user interface ofthe search application, copy a portion or an entirety of the retrievedinformation content, close the search application, open thetyping-enabled application, and insert the retrieved information contentin the text field of the typing-enabled application. In other words, theuser does not need to switch between interfaces of the typing-enabledapplication and search application to search, retrieve, and insertrelevant information content into the text being entered by the user,which may be extremely cumbersome. The user may seamlessly transitionbetween activities of typing, searching, and inserting relevantinformation content without experiencing frequent interruption, andavoiding unnecessary confusion, delay, and inefficiency in completingthe user's task.

Upon inserting an information card or text strings associated withsections of the information card into the text field, the user mayfurther modify the text within the text field. Based on the modifiedtext, the user may retrieve, select and insert additional informationcards or text strings associated with portions of the information cards.The user may also execute other functionalities enabled by thetyping-enabled application such as sending the completed text to otherusers, saving the completed text as an entry, etc.

The subject matter of the present disclosure will now be described withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, specific exemplary embodiments. Anembodiment or implementation described herein as “exemplary” is not tobe construed as preferred or advantageous, for example, over otherembodiments or implementations; rather, it is intended to reflect orindicate that the embodiment(s) is/are “example” embodiment(s). Subjectmatter may be embodied in a variety of different forms and, therefore,covered or claimed subject matter is intended to be construed as notbeing limited to any exemplary embodiments set forth herein; exemplaryembodiments are provided merely to be illustrative. Likewise, areasonably broad scope for claimed or covered subject matter isintended. Among other things, for example, subject matter may beembodied as methods, devices, components, or systems. Accordingly,embodiments may, for example, take the form of hardware, software,firmware or any combination thereof. The following detailed descriptionis, therefore, not intended to be taken in a limiting sense.

Throughout the specification and claims, terms may have nuanced meaningssuggested or implied in context beyond an explicitly stated meaning.Likewise, the phrase “in one embodiment” as used herein does notnecessarily refer to the same embodiment and the phrase “in anotherembodiment” as used herein does not necessarily refer to a differentembodiment. It is intended, for example, that claimed subject matterinclude combinations of exemplary embodiments in whole or in part.

The terminology used below may be interpreted in its broadest reasonablemanner, even though it is being used in conjunction with a detaileddescription of certain specific examples of the present disclosure.Indeed, certain terms may even be emphasized below; however, anyterminology intended to be interpreted in any restricted manner will beovertly and specifically defined as such in this Detailed Descriptionsection.

Referring now to the appended drawings, FIG. 1 is a diagram of anexemplary system capable of generating and presenting customizedinformation cards. The system 100 may include a client device 110, aserver 120, and a network 105. The server 120 may have access to asource database 122 for an entity such as, for example, an organizationor a company. The server 120 may be implemented using a single computer,or multiple computers that cooperate to perform the functions discussedbelow, which may be located in a single geographic location or remotelyfrom one another.

The client device 110 may include an application 112 that enables theclient device 110 to dynamically generate and displaycontextually-relevant information cards in response to certain actionsbeing performed on the client device 110 or certain conditions of theclient device 110 being detected. As discussed below, the application112 may allow the client device 110 to obtain and provide informationfrom the source database 122 through information cards that can bedynamically adjusted based on the actions or conditions detected on theclient device 110. In some embodiments, the application 112 may run inthe background, out of view of the user, and monitors conditions of theclient device 110 on an ongoing basis. The application 112 may interactwith an operating system of the client device 110, for example, usingone or more application programming interfaces (APIs), to obtain varioustypes of content, such as image data and/or text displayed on screen,image data or text of user interfaces of applications (which may or maynot be currently displayed on screen), device notifications, messages(e.g., e-mails or SMS text messages), calendar data, receivedradiofrequency beacon messages, and so on.

The client device 110 may also include a smart keyboard extension 114that works in conjunction with the application 112. The smart keyboardextension 114 may be installed on the client device 110 to provide acustom digital keyboard, which a user 101 may select and use to typetext and perform other functionalities in various typing-enabledapplications (e.g., an email application, a messaging application, aword processing application, a calendar or planner application, etc.).The custom keyboard enabled by the smart keyboard extension 114 will bereferred to herein as a smart keyboard. Notably, the smart keyboardextension 114 may be an application extension associated with theapplication 112, to add new functionalities and enable certain existingfunctionalities of the application 112 to be available with the customkeyboard. The smart keyboard extension 114 may enable a user 101 to viewand share information content that is relevant to text (or a portionthereof) typed by the user 101 using the smart keyboard. The smartkeyboard extension 114 may monitor the text being typed by the user 101in substantially real-time, determine one or more keywords that match orare related to the text (or a portion thereof), enable the user 101 toselect one of the keywords, and transmit the selected keyword to theapplication 112 to run a search for an information card associated withthe keyword. In this case, user selection of the keyword may be thetrigger condition that initiates the search and retrieval of therelevant information card(s). Upon the application 112 retrieving theinformation card(s), the smart keyboard extension 114 may present theinformation card(s) to the user 101 and allow the user 101 to share theinformation card(s) or content thereof with other users viafunctionalities of the typing-enabled application (e.g., via email, textmessage, calendar invite, etc.). Further, the smart keyboard extension114 may allow the user 101 to manually input a keyword to search for aninformation card, in addition to automatically detecting keywords basedon user-typed text. The functionalities of the smart keyboard extension114 will be discussed in greater detail below.

The client device 110 may be associated with a user 101. When theapplication 112 is installed on the client device 110, a user 101 may beidentified by the application 112. For example, the user 101 may log inusing one or more credentials. The application 112 may then customizevarious aspects of the system for the user 101, including, e.g., triggerconditions used to detect an appropriate context for providing aninformation card as well as the type of content included in informationcards.

For example, the user 101 may be a member of an organization, e.g., anemployee of a company. The source database 122 may represent databaserecords stored by or for the organization. The records may not bepublicly available and may be subject to data access restrictions, suchas requirements that users be issued credentials from the organizationthat grant authorization to access the records. Different users may begranted different levels of authorization, and the server 120 mayenforce access restrictions so that each user may be only allowed toaccess the subsets of information the user is authorized to access.

The system 100 may improve techniques used to provide users with accessto information in a more convenient and contextually relevant fashion.Information is presented through digital information cards that aredisplayed at specified points in time based on the satisfaction ofcontext-based trigger conditions, which represent the relevance ofspecific topics or keywords to the activities of the client device 110.In this manner, the system 100 may improve the relevance of informationthat is displayed to a user based on actions performed on the clientdevice 110 and may ensure that the displayed information is likely ofinterest to the user at the time the information is displayed. Unlikemany other systems, the user 101 may not need to manually submit a queryor select from a list to obtain the information. Instead, theapplication 112 may initiate display of the information as it detectsthat the information corresponds to the current context of the clientdevice 110.

In FIG. 1 , information cards are presented on the client device 110 ascards that include information obtained from the source database 122.The cards may include dynamically generated information so that theyreflect changes or updates to data stored in the source database 122.For example, the server 120 may store card templates 124 that identify,for example, the content, format, and structure of the cards. Thespecific information that is displayed in the cards may be dynamicallypopulated into the templates at the time the cards are determined to berelevant (e.g., upon detecting a context-based trigger condition), sothat each display of a card includes information generated fromup-to-date information from the source database 122. Thus, if the samecard for the same entity is displayed at different times, the contentmay be different for each instance of the card as the information in thesource database 122 changes.

The card templates 124 may include different templates for differenttypes of entities. For example, one template may be used for a person,another template may be used for a company, another template may be usedfor a location (e.g., a particular store or region), and so on.Different card templates 124 may also be defined and used for entitieshaving different semantic relationships with the user 101, the user'sorganization, or others. For example, a first template may be used forcompanies that are suppliers, and may specify a first set of statisticalmeasures to display in a card. A second template for customers mayspecify a different set of statistical measures to display in a card.

The system 100 may also store card-specific information in carddefinition data 125 that specifies the parameters of individual cards.The card templates 124 may each represent characteristics of cards for aparticular type of entity or class of entities, and the card definitiondata 125 may specify the particular card parameters for specificentities. Although cards for different entities of the same type may usethe same card template 124, each individual card may have specificinformation that affects its content and presentation. For example, acard definition for a specific entity may include, e.g., an entityidentifier, an identifier of the card template to be used for theentity, an indication of the keywords to be used to trigger presentationof the card for the entity, a mapping of data source elements to thecomponents of the card template (if not already specified in the cardtemplates 124), and so on. For example, a card definition for a company“Example Co.” may specify that the “CARD_001A” template should be used,and that the specific set of keywords that trigger display of thatcompany's card are “Example Co.,” “Example,” and “EC.” The carddefinition data 125 may include a card definition record for eachinformation card made available in the system 100. The card definitiondata 125 may also be used to customize (e.g., alter or override) aspectsof the card templates.

In FIG. 1 , the application 112 on the client device 110 may detect acontext-based trigger condition, such as a keyword representing anentity having corresponding information in the database 122. Forexample, such a keyword may be received from the smart keyboardextension 114, or may be received from a search interface provided bythe application 112. The application 112 may cause the client device 110to request an information card, and the server 120 may determine anappropriate information card template and/or card definition data,generate the information card, and send data for the card back to theclient device 110 for display. This process is explained in furtherdetail below with respect to various stages labelled (A) through (E).

In stage (A), the application 112 may monitor activity on the clientdevice 110 to detect satisfaction of a trigger condition that specifiesdisplay of an information card on the client device 110. Triggerconditions may represent activity on the client device 110 indicatingthat the user 101 is likely to view or hear information.

The trigger conditions may be monitored passively without requiring theuser 101 to provide input on the client device 110. For example,detection of an entity term (e.g., a name, address, contact information,or keyword associated with an entity) in the text corresponding to anupcoming calendar appointment through a calendar application of theclient device 110 may represent satisfaction of a trigger conditionindicating that a user is likely to view information associated with theentity. In this case, the client device 110 may monitor calendar data ofthe calendar application without the user 101 actively requesting theinformation, which reduces the number of user inputs required to displaycontextually-relevant information (i.e., information for an entity thatis a participant to the calendar appointment).

In another example, the trigger condition may represent a location ofthe client device 110 being detected within threshold proximity (e.g.,within 100 meters, 50 meters, 25 meters, etc.) of a geographic locationthat is associated with information cards. For example, the application112 may determine that the user 101 is likely to view conferenceinformation based on the location of the client device 110 in proximityto a conference center, and thereby determine that a trigger conditionhas been satisfied.

As alluded to above, a trigger condition may represent an actionperformed by the user 101 on the client device 110 that relates to aparticular entity or topic. For example, a user's selection of a keywordassociated with an entity, which may have been presented to the user 101upon the user 101 typing matching text using the smart keyboard, mayrepresent satisfaction of a trigger condition for generating aninformation card for that entity. In some other examples, a triggercondition may represent a search query received for an entity term, orsome other action performed on the client device 110 that indicates thatthe user 101 is requesting information such as, e.g., performing a websearch through a browser application, performing a search usingcapabilities of the operating system (e.g., for an application, a file,etc.), performing a search via a search interface of the application112, among others.

In stage (B), the client device 110 may transmit a card request 102 tothe server 120. The card request 102 may include the keyword(s) orterm(s) identified as corresponding to an entity, or an indication ofthe entity determined to be relevant to the current context.Accordingly, the card request 102 may include monitored data collectedat the client device 110, such as data indicating the trigger conditionthat was determined to be satisfied by the application 112. The cardrequest 102 may also include an identifier for the user 101 and/or theclient device 110. The identifiers may be used to customize theinformation that is displayed on the client device 110. For example, theorganization managing the source database 122 may specify differentlevels of access to the source database 122 based on a userclassification specified by a user or device identifier. In this manner,the system 100 may generate and display different information cards forusers of different access levels, even in response to satisfaction ofthe same trigger condition.

In stage (C), upon receiving the card request 102, the server 120 mayaccess the source database 122 and generate one or more informationcards that are provided to the client device 110 in response to the cardrequest 102. The server 120 may generate information cards that arerelevant to entity terms corresponding to the trigger condition detectedin stage (A). For example, the server 120 may generate cards thatinclude information for an entity that was identified in text displayedat the client device 110, such as a calendar appointment, a textmessage, a search interface, an email, etc. As another example, theserver 120 may generate cards that include information relating to anentity that was identified in text typed by the user 101 using the smartkeyboard. Such text may be found in a user interface of the operatingsystem or an application different from the application 112 (i.e., atyping-enabled application). As yet another example, the server 120 maygenerate cards that include information for an entity that is associatedwith a keyword provided by the user 101 via a manual search functionavailable in the application 112. In some situations, the reference tothe entity may be detected by the client device 110 in data that is notpart of a user interface, such as the content of a notification,message, or record accessed by the client device 110. The selectedinformation card(s) may include information corresponding to the entityin the source database 122.

Generating an information card may include determining that a keywordmatching a particular information card definition record has been found.The matching card definition in the card definition data 125 may specifyan entity identifier for a particular entity, a card template 124 forgenerating the card, and locations of information about the particularentity in an appropriate data source (e.g., in the source database 122).The server 120 may then generate the card using the layout and contenttypes specified by the appropriate card template 124, with values beingpopulated from the data sources. For example, the attributes and/ormetrics specified for fields or regions of a card template 124 may bepopulated with values for the particular entity as determined from thesource database 122. Furthermore, an information card may include asummary of various attributes and/or metrics associated with the entity,which the server 120 may generate based on data collected from one ormore data sources connected to the network 105. For example, aninformation card associated with a company may include a description ofthe company's overall performance in terms of revenue, sales, customersatisfaction, etc. Such a description may be generated by the server 120based on attributes and/or metrics (and corresponding values) collectedfor the entity.

Information cards may be generated on-demand, in response to cardrequests as noted above. In addition or as an alternative, informationcards may be generated predictively, in advance of requests for thecards, and then cached. The cached cards may be refreshed periodically,e.g., after a certain time has elapsed or if underlying data affectingthe content of a card has changed. As a result, cached cards 127 may bemade available with very low latency.

In stage (D), the server 120 may transmit an information card 104 forpresentation on the client device 110. In some embodiments, more thanone information card 104 may be retrieved at the server 120 andtransmitted to the client device 110. In stage (E), upon receiving theinformation card 104 from the server 120, the client device 110 maydisplay the information card 104 on a user interface 126. Theinformation card 104 may be presented in or with a current userinterface of the client device 110, which may be included in theapplication 112 or not. For example, the information card 104 may beprovided through the operating system (OS) functionality of the clientdevice 110 outside of the application 112, e.g., as an OS notification.In general, the information card 104 may be displayed in, alongside, oron (e.g., as an overlay to) the application or interface that has theterm(s) that triggered the presentation of the information card 104,such as the current interface of the client device 110, whether thecurrent application or interface is one for messaging, search, calendarmanagement, and so on, or even a lock screen or home screen showinggeneral system notifications. In some instances, the information card104 may be presented through the application 112, e.g., as anapplication message, or a data object presented on a user interface ofthe application 112. The information card 104 may also be displayed indifferent formats, such as an image and/or an interactive controlconfigured to initiate display of the information, e.g., a button thatdisplays the information in response to receiving a user input.

As an example, with reference to FIG. 1 , the application 112 may detectan upcoming calendar event for an upcoming meeting with an employee ofan entity “Corporation A.” The application 112 may determine that acalendar event trigger condition has been satisfied based on processingcalendar data of the client device 110, and may determine that textcorresponding to the calendar event references the entity. As anotherexample, the application 112 may receive a keyword associated with theentity from the smart keyboard extension 114, upon a user 101 selectingthe keyword among multiple keywords matching the text typed by the user101, or upon the user 101 manually entering the keyword using a manualsearch function provided by the smart keyboard extension 114 inconjunction with the application 112. Based on the received keyword, theapplication 112 may determine that a trigger condition has beensatisfied.

The server 120 may receive the card request 102 from the client device110, select a card template, e.g., “CARD_001A”, and specify thegeneration of an information card 104 for a supplier, e.g., “JOHN DOE”identified in the calendar appointment or the text entered by the user101. The server 120 may obtain information associated with “JOHN DOE”from the source database 122 in order to populate a card template withinformation about the particular entity that is relevant to the user101.

As shown in FIG. 1 , the information card 104 displayed on the userinterface 126 may include information for “JOHN DOE,” an employee of asupplier company for the company of the user 101. The server 120 mayretrieve information for this employee from the source database 122since the calendar appointment detected by the application 112 or thetyped text detected by the smart keyboard extension 114 identifies “JOHNDOE.” In these examples, the system 100 may thus process calendar datato determine that the user 101 has an upcoming meeting with “JOHN DOE”or may process the text being entered by the user 101 to determine thatthe user 101 may be interested in finding more information about “JOHNDOE,” and may determine that the user 101 would benefit from receivingemployee information.

FIG. 2 illustrates an example of a user interface in a process ofactivating a smart keyboard while using a typing-enabled application. Inthe example of FIG. 2 , the typing-enabled application 220 is an e-mailapplication. When a user 101 open the typing-enabled application 220, abuilt-in digital keyboard 210 may be initially displayed at the bottomof the user interface, allowing the user to start typing intoappropriate text fields. A button or control to open a keyboard settingsmenu 230 may be placed at any suitable location on or near the keyboard210. When the user 101 clicks or taps on the button, the keyboardsettings menu 230 may open up, listing custom keyboards available foruse in the typing-enabled application 220. From the menu 230, the user101 may be able to select a smart keyboard option 235 (named “HYPERKEYBOARD,” for example). Upon the user selecting the smart keyboardoption 235, the displayed keyboard may switch from the built-in keyboard210 to a smart keyboard 240 shown in FIG. 4 for example. In someembodiments, the user may be given an option to set the smart keyboard240 as the default keyboard for the typing-enabled application 220, orfor all typing-enabled applications installed on the client device 110.If the smart keyboard 240 is set as the default keyboard, the smartkeyboard 240 may be displayed initially whenever the typing-enabledapplication 220 or any typing-enabled application on the device 110 isopened. As explained above, the smart keyboard extension 114 may monitortext being entered by the user 101 using the smart keyboard 240 anddetermine whether the text matches one or more keywords associated withentities. The keywords associated with entities may be provided in akeyword list, which may be downloaded from the server 120 and storedlocally at the client device 110, or which may be provided remotely andaccessed by the client device 110 by, e.g., a network connection. Thesmart keyboard extension 114 may present the keywords on or near thesmart keyboard 240 for user selection, which may lead to presentation ofone or more information cards for the entity associated with theselected keyword. In another embodiment, the smart keyboard extension114 may present a manual search option on the keyboard 240, theselection of which may guide the user 101 to manually search for aninformation card via a manual search functionality of the application112.

FIG. 3 is a flowchart illustrating an exemplary method 300 of retrievingan information card while typing text using a smart keyboard, accordingto one aspect of the present disclosure. Notably, the method 300 may beperformed by the smart keyboard extension 114 in conjunction with theapplication 112. At step 310, the smart keyboard extension 114 mayretrieve a keyword list comprising a plurality of keywords. As alludedto above, the keywords in the keyword list may represent entitiesassociated with corresponding information cards. The server 120 mayprovide the keyword list to the client device 110 for use by the smartkeyboard extension 114 and/or the application 112. The keyword list maybe stored in a client storage, which may comprise non-volatile storage,or a client memory, which may comprise volatile storage, where theclient memory may provide faster data access speeds than the clientstorage. The keywords may be set by, e.g., an administrator for thesystem 100. In some implementations, the keywords may be generated bythe server 120, for example, by pulling keywords from portions of adatabase or other data sources. For example, the server 120 may accessdatabase tables that list entity names (e.g., for competitors,suppliers, partner organization, employees, customer contacts, etc.) aswell as abbreviations and/or nicknames for them. In some embodiments,the keywords may be pulled and/or generated from data sources using oneor more machine learning algorithms. Any machine learning algorithm thatis now known or later developed, and that may be suitable foridentifying and/or generating keywords based on stored or received datamay be utilized. Based on the identity and role of the user 101, theserver 120 may filter the list, e.g., limiting the extracted set ofkeywords to those having information determined to be relevant to therole of the user 101 and/or those for which the user 101 has securitypermissions to access corresponding data. Therefore, at step 310, thekeyword list may be retrieved based on user credentials such as, forexample, user login information including login ID and password, or anyother user data suitable for use as user credentials. The set ofkeywords may be further limited to keywords for types of entities forwhich appropriate information card templates have been defined. Thefiltered list of keywords can then be provided to the client device 110.

In some embodiments, a user 101 may be able to customize the keywordlist. For example, the application 112 may provide a user interfaceallowing the user 101 to edit the keyword list, e.g., to add or removekeywords from the list that will be identified/matched in the future.These changes can be customized for the specific user identity of theuser 101 who is logged in and/or for the specific client device 110used. The user interface may allow edits for individual keywords, or forgroups or categories of keywords. Similarly, it can expand the keywordlist to include keywords that might not be directly related to theuser's role but still relate to the user's interests.

With continuing reference to FIG. 3 , at step 315, the smart keyboardextension 114 may identify a text being entered by a user into a textfield. The text may comprise one or more terms, a portion of a term,multiple terms, or a combination thereof. The text may be identified by,for example, taking a screenshot of the user interface of thetyping-enabled application 220 and identifying the text using an opticalcharacter recognition technique, identifying a sequence of alphabetical,numeric, or alphanumeric characters entered by the user 101 from memory,etc. At step 320, the smart keyboard extension 114 may determine one ormore keywords in the keyword list that match the text. The determinationmay be made using any suitable string matching algorithm such as, forexample, an exact string matching algorithm, a fuzzy string matchingalgorithm, a neural matching algorithm, etc. At step 325, the smartkeyboard extension 114 may display the one or more keywords that matchthe text. If there are multiple matching keywords, the keywords mayoptionally be displayed in an alphabetical order, or in a ranked orderusing any suitable ranking algorithm. The matching keyword(s) may bedisplayed on or near the smart keyboard interface, for example as shownin stage 400A of FIG. 4 . At step 330, the smart keyboard extension 114may receive a selection of a keyword from the one or more displayedkeywords. The user 101 may make a selection by hovering over, clicking,or tapping on a keyword, or making any other suitable motion or actionthat may signal user selection. The selected keyword may be supplied tothe application 112, upon which the application 112 may determine that atrigger condition has been satisfied for requesting an information card.

At step 335, the application 112 may transmit a card request or a querycomprising the selected keyword to a server 120. As explained above, therequest may comprise additional information such as a user ID, a deviceID, etc., to further customize the information card and/or contentcontained therein. In response to the card request, the server 120 maygenerate one or more information cards using card templates an/or carddefinition data associated with the selected keyword, as explained abovein reference to FIG. 1 . At step 340, the application 112 may receivethe one or more information cards related to the selected keyword fromthe server 120. At step 345, the application 112 may display the one ormore information cards via the user interface of the application 112 orthe user interface of the smart keyboard 240. The manner in which thekeywords as well as the information cards are displayed to the user 101via a user interface will be explained in greater detail below inreference to FIG. 4 .

In an alternative embodiment, at step 335, instead of transmitting acard request to a server 120, the application 112 may run a queryagainst local storage (e.g., on the client device 110) for aninformation card associated with the selected keyword. For instance, alocal storage of the client device 110 may store information cards thatwere previously received from the server 120. The local storage maycomprise a cache storage (e.g., volatile storage) configured to storeinformation cards received from the server 120 for a limited orpredetermined amount of time, or a persistent storage (e.g.,non-volatile storage) configured to store information cards receivedfrom the server 120 for a limited or predetermined amount of time, oruntil the user 101 or another user of the client device 110 deletes theinformation card.

In some embodiments, the user 101 may choose to manually search for aninformation card. For example, the user 101 may open a manual searchinterface by selecting a button or control presented with the smartkeyboard 240, which may initiate a manual search function enabled by theapplication 112. Upon entering the manual search mode, the user 101 maybe able to enter text in a search field (i.e., search box or searchbar), which may be used by the application 112 to determine whetherthere is any keyword matching the text. The application 112 may transmita card request including the matching keyword to the server 120, receiveone or more information cards related to the keyword, and display theone or more information cards, as explained above at steps 335, 340, and345 of method 300.

FIG. 4 shows sequential views of an exemplary user interface enablingtext input for keyword identification, in a flow diagram format. Atstage 400A, a top portion of the user interface may comprise text fieldsof a typing-enabled application 220 (e.g., an e-mail application), and abottom portion of the user interface may comprise a smart keyboard 240.As a user 101 types text into a text field such as a body of an e-mail,a smart keyboard extension (e.g., the smart keyboard extension 114) maymonitor the text being typed to determine whether a word, a portion of aword, a phrase, or a portion of a phrase matches any keyword in akeyword list. As explained above, a keyword list may include keywordsrepresenting entities that are associated with corresponding informationcards. At stage 400A, the smart keyboard extension 114 has identifiedthe word “Dorchester” 412 in the text field as matching a number ofkeywords. The smart keyboard extension 114 may then display the matchingkeywords in any suitable location on or near the smart keyboard 240. Inthe example of FIG. 4 , the smart keyboard 240 displays the keywords416A, 416B, and 416C (e.g., Dorchester, Dorchester City, etc.) in thesuggestion bar 418 toward the top of the smart keyboard 240. Each of thedisplayed keywords 416A, 416B, and 416C may be interactive, meaning theuser 101 may be able to select a keyword by, for example, hovering over,clicking, or tapping on the desired keyword. The number of informationcards generated/retrieved for each keyword may also be presented to theuser. In the example of FIG. 4 , such quantity is displayed next to eachkeyword presented on the suggestion bar 418.

Once the user 101 selects a keyword (e.g., “Dorchester” 416A), the userinterface may transition to stage 400D to display one or moreinformation cards associated with the selected keyword. Notably, atstage 400D, the entirety of the user interface may comprise a searchresult interface of the application 112. In other words, the userinterface may seamlessly transition from the typing-enabled application220 to the application 112, without the user 101 having to close or hidethe typing-enabled application 220 and subsequently open the application112 in order to view the search results. Further, because the user 101has already selected the keyword “Dorchester” 416A via the smartkeyboard 240 at stage 400A and the search has already been conductedbased on the selected keyword, the user 101 does not need to re-enterthe keyword when the user interface transitions to stage 400D. As shownin stage 400D, the application 112 may already display the user-selectedkeyword “Dorchester” 416A in the search bar 434, and the informationcards 472 and 474 retrieved from the server 120 in a card displayportion. The user 101 may be able to scroll through the displayedinformation cards by making any suitable motion to interact with thedisplay, such as, for example, swiping. The information cards may besorted in an alphabetical order, or in a ranked order using any suitableranking algorithm. For example, the information cards may be rankedbased on user characteristics and/or usage data collected in the userdevice 110, from the server 120, and/or from any other computing systemconnected via the network 105. The collected data may be specific to theuser 101, or may represent the entire user base. The information card(s)displayed at stage 400D may be in an interactive format (e.g., HypertextMarkup Language (HTML)), meaning various data elements within theinformation card can be selected, manipulated, and/or otherwiseinteracted with by the user 101 for further customization and/orinformation retrieval. Certain interactive features of the informationcards displayed in the user interface of the application 112 will bediscussed in greater detail below in reference to FIGS. 5 and 7 .

Each of the information cards 472 and 474 displayed at stage 400D mayinclude attributes and/or metrics associated with the correspondingentity. In the example shown at stage 400D of FIG. 4 , the informationcard 472 includes a name, an address, a phone number, a store manager,an open date or an age, a weather group, a store area, key performanceindicators (e.g., a customer satisfaction, a year-over-year revenuegrowth, a year-to-date sales, a year-to-date sales last year, ayear-to-date sales per square foot, a year-to-date sales per square footlast year, etc.), a summary, etc. for the entity “DORCHESTER.”

If the user 101 is not satisfied with the information cards displayed atstage 400D, the user 101 may utilize the search bar 434 to perform anadditional search using different keywords. Alternatively, the user 101may select “Cancel” to transition back to the typing-enabled application220, and modify or update the text to receive additional keywordsuggestions in the suggestion bar 418 of the smart keyboard 240.

Alternatively or additionally (i.e., in lieu of selecting a keywordpresented on the smart keyboard 240), at stage 400A the user 101 may beable to enter a manual search mode by selecting a manual search button414 in the smart keyboard 240. In the example of FIG. 4 , the manualsearch button 414 is included in the suggestion bar 418 positionedtoward the top of the smart keyboard 240, but may be positioned at anysuitable location. Upon the user selecting the manual search button 414,the user interface may transition to stage 400B to display a searchinterface. Notably, at stage 400B, the user interface may now comprise asearch interface of the application 112, with the smart keyboard 240 inany suitable location in the user interface. Again, the user interfacemay seamlessly transition from the typing-enabled application 220 to theapplication 112, without the user 101 having to close or hide thetyping-enabled application 220 and subsequently open the application 112in order to perform a search. Because the user 101 has not selected anykeyword and has instead selected the manual search mode at stage 400A,the application 112 may display a search bar 434 for the user 101 toenter text at stage 400B. The application 112 may also display arecently-searched keyword list 436, from which the user 101 may make aselection. To that end, the application 112 may be configured to storekeywords that was previously input and/or selected by the user 101, andmay subsequently display those keywords for user selection in the searchinterface. At stage 400B, therefore, the user 101 may select a keywordfrom the recently-searched keyword list 436, or may enter text in thesearch bar 434. If the user 101 opts to enter text in the search bar434, the recently-searched keyword list 436 may disappear and acandidate keyword list including one or more keywords matching theentered text may appear near or below the search bar 434, from which theuser 101 may make a selection. In some embodiments, therecently-searched keyword list 436 and the candidate keyword list may bedisplayed simultaneously for user selection.

Once the user 101 makes a keyword selection from the recently-searchedkeyword list 436, candidate keyword list, or merely by entering textthat might match a keyword representing an entity, the user interfacemay transition to stage 400C. At stage 400C, the search bar 434 maydisplay the selected keyword, which may represent an entity associatedwith one or more information cards. The application 112 may also displaya summary 456 of information cards that are associated with the keyword.The summary 456 may include information on a number of information cardsthat are associated with the keyword, a type of each information cardassociated with the keyword (e.g., sales card, store performance, etc.),and/or other information that may help the user 101 in determiningwhether the selected keyword will lead to relevant information cards. Inother words, the user 101 may be able to determine whether the selectedkeyword will lead to desired information cards by reviewing the summary456.

At stages 400B and 400C, because the user might need to input text inthe search bar 434, a keyboard interface may be displayed in a portionof the user interface. As alluded to above, the keyboard displayed atstages 400B and 400C may be the smart keyboard 240. However, thesuggestion bar 418 of the smart keyboard 240 may be hidden, as thefunctionalities provided by the suggestion bar 418 may not be needed inthe search interface of the application 112. Alternatively, the keyboarddisplayed at stages 400B and 400C may be a built-in keyboard (e.g., astandard keyboard installed as a part of the OS), or another keyboardthat is different from the smart keyboard 240 enabled by the smartkeyboard extension 114, as the functionalities of the smart keyboard 240may not be needed in the search interface of the application 112.

Once the user 101 is satisfied with or confident about the keyword, theuser 101 may initiate a search based on the keyword by interacting with(e.g., hovering over, clicking, tapping, etc.) the magnifying glass iconin the search bar 434, or the “Search” button 458 on the keyboard. Theuser interface may then transition to stage 400D to display one or moreinformation cards associated with the keyword, as explained above.

FIG. 5 shows sequential views of an exemplary user interface enablingcopying and pasting of an information card into a text field of atyping-enabled application. At stage 500A, as discussed above inreference to stage 400D in FIG. 4 , one or more information cards 472,474 associated with a selected keyword (e.g., “Dorchester”) may bedisplayed in the interface of the application 112. The application 112may also present multiple options for providing information contained inan information card to a different application such as thetyping-enabled application 220. For example, the application 112 maydisplay a copy option 512 (e.g., “COPY CARD”) and an attach option 514(e.g., “ATTACH CARD”).

The attach option 514 may enable the user 101 to append the informationcard 472 within the text field of the typing-enabled application 220,which the user 101 has been using before the user interface transitionedto that of the application 112. In one embodiment, upon the user 101selecting the attach option 514 at stage 500A, the user interface maytransition to stage 500D. At stage 500D, the user interface maytransition back to that of the typing-enabled application 220 the userhas been typing in, and the information card for which the attach option514 has been selected may be inserted into the text field of thetyping-enabled application 220. Particularly, the information card 572,which may be a duplicate of the information card 472, may replace thetext that led to the retrieval of the keyword associated with theinformation card. For example, at stage 500D, the text “Dorchester” 412that was identified at stage 400A in FIG. 4 may be replaced with theinformation card 572. In some cases, the information card 572 may be inan image format. In other words, the information card 572 may be animage of the information card 472, which may be in the same or adifferent format (e.g., interactive format). By using the attach option514, the user 101 may quickly attach an information card 572 within thetext field, allowing the user 101 and any future recipient of thetext/message to visually examine the information card 572 displayed inan intuitive, user-friendly manner. In some embodiments, the application112 may convert an information card from its interactive format (e.g.,HTML) to an image format, in order to attach/insert the information cardinto the text field of a typing-enabled application 220 as an image. Itshould be noted that the format of the information card 572 may not belimited to an image format, and may be in any format that is suitablefor including into a typing-enabled application 220. For example, theinformation card 572 may be in a tabular format, a rich text format, aplain text format, etc.

The copy option 512 may also enable the user 101 to append theinformation card 472 in a text field of the typing-enabled application220. However, the copy option 512 may provide a functionality that isdifferent from that of the attach option 514, in that the informationcard 472 may be inserted into a user-selected location within the textfield. With the attach option 514, the appended information card 572 maybe positioned at the location where the original text that led to theretrieval of the information card previously existed. In contrast, aselection of the copy option 512 may save the information card 472 in aclipboard, and may enable the user 101 to decide the location at whichthe information card 472 may be placed.

Upon the user 101 selecting the copy option 512, the user interface maytransition to stage 500B. At 500B, the text representing the copy option512 “COPY CARD” may be updated, so as to inform the user 101 that theinformation card 472 has been successfully copied to the clipboard. Forexample, the text representing the copy option 512, e.g., “COPY CARD,”may be updated to a copy status indicator 532. The copy status indicator532 may be represented by any text indicative of a successful (orunsuccessful) copy operation, for example, “COPIED.” The icon next tothe copy status indicator 532 may also graphically indicate that thecopy operation has been completed, as shown in stage 500B. Both thetexts and/or icons representing the copy option 512 and copy statusindicator 532 may be color-coded, for the user 101 to more easilyconfirm the status of the copy operation. For example, the text and/oricon representing the copy option 512 may be color-coded in blue, whilethe text and/or icon representing the copy status indicator 532 may becolor-coded in green. If the copy operation cannot be completed for anyreason, the copy status indicator 532 may be represented by any textand/or icon that visually indicate a copy operation failure. The copystatus indicator 532 may also be color-coded accordingly, for example,in red. In some cases, if the copy option cannot be completed, anotification (not shown) may pop up over the display, indicating thatcopying was unsuccessful.

Once the information card 472 has been successfully copied to aclipboard (which may be indicated by the copy status indicator 532), theuser interface may transition to stage 500C. At stage 500C, the userinterface may transition back to that of the typing-enabled application220 the user 101 has been typing in. The user 101 may be allowed topaste the information card 472 into any location within the text field,by opening up a text editing menu 552 whenever and wherever the userdesires. For example, upon the user interface transitioning to that ofthe typing-enabled application 220, the user 101 may add to, modify, ordelete the text that has been typed, before pasting the information card472 into a desired location. Therefore, the user 101 may control thetiming of placing the information card into the text field, and also theexact location at which the information card is inserted. The textediting menu 552 may be opened by making any suitable motion/action withor without an input device (e.g., mouse, keyboard, etc.). For example,the text editing menu 552 may be opened by right-clicking on a mouse ata desired location within the text field. As another example, the textediting menu 552 may be opened by tapping and holding for apredetermined time period on a desired location within the text field,and releasing the hold. As another example, the text editing menu 552may be included in a toolbar or drop-down menu of the typing-enabledapplication 220. The text editing menu 552 may display various optionsfor manipulating text within the typing-enabled application 220, such asto select, select all, paste, cut, copy, change font, change font size,bold, italic, underline, and so on. At stage 500C, the user 101 mayselect an option to paste the copied information card 472 into the textfield.

Upon the user 101 selecting to paste the copied information, the userinterface may transition to stage 500D. At stage 500D, the informationcard 572, which may be the information card 472 in an image format orother immediately viewable format, may be pasted into a location withinthe text field. Particularly, the placement of the information card 572within the text may be dependent on the location of the text cursor 554at the time the user makes a selection on the text editing menu 552 atstage 500C. Thus, using the copy option 512, the user 101 may choose theexact location at which the information card may be inserted.

In lieu of inserting an information card into a text field as an imageor other immediately viewable format, the present disclosure alsocontemplates inserting a link associated with the information card intothe text field. For example, in response to the user 101 selecting theattach card option 514 or the paste option in the text editing menu 552,a selectable link (e.g., a hyperlink) may be inserted at an appropriatelocation within the text field. The link may be inserted into thetext-field by the typing-enabled application 220 operating inconjunction with the application 112. In one embodiment, text in thetext field associated with the information card (e.g., a keyword orother text selected by the user 101) may be converted to a hyperlinkwhich, when activated (e.g., by clicking or otherwise interacting withthe link), may cause a display of the corresponding information card,either within the typing-enabled application 220 or within aseparately-opened application, such as a web browser. In someembodiments, a link may be inserted separately from the matching text.When the user 101 or message recipient selects the link, thecorresponding information card 472 may be retrieved and displayed viathe application 112. However, if the application 112 is not installed onthe device of the user 101 or message recipient, selection of the linkmay open an app store or any location on the web from which theapplication 112 can be downloaded. An advantage of inserting a link isthat the information card 472 that is seen by the user 101 or themessage recipient upon activating the link may be a latest versioncontaining up-to-date information at the time the link is accessed,while an image file (or other format) inserted directly into a messagemight not be up-to-date by the time the image file is presented to theuser 101 or message recipient. In other words, the application 112 maysend a new card request every time the link is selected, or the link maylead to a display of the card that is kept up-to-date, such that thelatest version of the information card may be generated and presented.

FIGS. 6A-6B show flowcharts illustrating exemplary methods of appendingan information card into a text field of a typing-enabled application,according to one or more aspects of the present disclosure. The method600 of FIG. 6A illustrates the process flow when the user 101 selects anattach option 514 shown at stages 500A and 500D in FIG. 5 . The method650 of FIG. 6B illustrates the process flow when the user 101 selects acopy option 512 shown at stages 500A-500D in FIG. 5 . Notably, methods600 and 650 may be performed by the smart keyboard extension 114 inconjunction with the application 112 and/or the typing-enabledapplication 220, and may each represent a process that may be performedsubsequent to the method 300 of retrieving and displaying an informationcard to the user 101.

In method 600, at step 610, the application 112 may receive a user inputto attach an information card to a text field of a typing-enabledapplication 220. As discussed above in reference to FIG. 5 , the userinput may be a selection of the attach option 514 by the user 101. Atstep 615, the application 112, in conjunction with the typing-enabledapplication 220, may delete the text entered by the user 101 that led tothe retrieval and display of the information card. In order to deletethe text within the typing-enabled application 220, the application 112may transmit or supply instructions, commands, or appropriate softwarecode to the typing-enabled application 220, to delete the text that ledto the information card. At step 620, the application 112, inconjunction with the typing-enabled application 220, may insert theinformation card proximate a location of the deleted text. For example,the information card may replace the text entered by the user 101. Inone embodiment, the application 112 may transmit or supply instructions,commands, or appropriate software codes to the typing-enabledapplication 220 to insert and display the information card within thetext field.

In method 650, at step 660, the application 112 may receive a user inputto copy an information card. As discussed above in reference to FIG. 5 ,the user input may be a selection of the copy option 512 by the user101. At step 665, the application 112 may save the information card to atemporary storage such as, for example, a clipboard. The informationcard may be saved in the temporary storage as an image or any othersuitable format discussed above. That that end, the application 112 mayconvert the information card in its interactive format to an imageformat or any other suitable format discussed above, before saving theinformation card in the temporary storage. As known in the art, aclipboard is a location in a computer's memory that temporarily storesdata that was cut or copied from a document, text field, etc. Aclipboard retains the copied information until the user 101 cuts orcopies different data, or logs out of the session. At step 670, thetyping-enabled application 220 may receive a user input to open a textediting menu 552 at a location within a text field. As discussed abovein reference to FIG. 5 , the user 101 may right-click on a mouse, ormake any suitable motion/action, to open the text editing menu 552 at auser-desired location within the text field.

With continuing reference to method 650, at step 675, the typing-enabledapplication 220 may display the text editing menu 552 at the locationwithin the text field. At step 680, the typing-enabled application 220may receive a user input to paste the information card into the textfield. At step 685, the typing-enabled application 220 may insert theinformation card at the location within the text field. The insertedinformation card may be in an image format. As discussed above, thelocation at which the information card is placed may be selected by theuser in previous step 670, for example by the user 101 opening a textediting menu 552 at a particular location within the text field. Forexample, the user 101 may right-click, tap, or tap and hold at a desiredlocation within the text field, at which a text cursor may appear uponthe user action (i.e., right-click, tap, or tap and hold). The textediting menu 552 may open proximate the text cursor, as shown in FIG. 5. The information card may be inserted at the location of the textcursor within the text field.

FIG. 7 shows sequential views of a user interface enabling a user tocopy and paste information content pertaining to one or moreuser-selected sections of an information card. At stage 700A, asdiscussed above in reference to stage 400D in FIG. 4 , one or moreinformation cards 472, 474 associated with a selected keyword (e.g.,“Dorchester”) may be displayed in the interface of the application 112.In addition to, or instead of, the copy and attach options 512, 514discussed above in reference to FIG. 5 , the application 112 may allowthe user to select a particular section (e.g., a cell or a data element)of the displayed information card 472 or 474, in order to copy and saveinformation content pertaining to the selected section into theclipboard. Alternatively, the application 112 may allow the user toselect multiple sections of the displayed information card 472 or 474,in order to copy and save information content pertaining the selectedsections into the clipboard. The information content associated witheach section may be copied and saved as a text string. The text stringmay be generated based on data that underlies the information cardcontaining the selected section. More specifically, the text string maybe generated based on data that underlies the corresponding sectionselected by the user 101. For example, a text string may be in theformat “{object name} is {value}”. The object name may be an attribute,property, feature, or dimension, and the value may be a numerical value,or an alphabetical or alphanumerical value or sequence of characters,which corresponds to the object name. Also, the object name may be ametric name and the value may be a metric value corresponding to theobject name. The format in which a text string may be arranged is notlimited to the examples discussed explicitly herein, and may beconfigurable by a user 101, an administrator of the system 100, or otherentity.

As discussed above, a user 101 may select a section of the displayedinformation card 472 from which to extract information content. Theselection can be made by the user 101 clicking, tapping, or tapping andholding for a predetermined time period (or any other suitableinteractive gesture) on a desired cell within, or portion of, theinformation card. Upon receiving such a selection, the user interfacemay transition to stage 700B. The user interface at stage 700B mayindicate that the user 101 has selected, for example, a cell 738. Theselection may be indicated by including a border around the selection,changing the background color of the selection, or otherwise visuallydifferentiating the selection from other cells in the information card.Additionally, a selection menu 732 may be displayed proximate theselected cell 738. The selection menu 732 may present at least twooptions, including a multi-select option 734 and a copy text option 736.

Using the copy text option 736, the user 101 may save informationcontent pertaining to the selected cell 738 into a clipboard. Forexample, upon the user 101 selecting the copy text option 736,information content pertaining to the selected cell 738 may be saved toa clipboard, the user interface may transition back to that of thetyping-enabled application 220, and the user 101 may be able to pastethe copied information content into any desired location within the textfield of the typing-enabled application 220.

On the other hand, if the user selects the multi-select option 734,various parts, e.g., cells in the information card 472 that areselectable by the user 101, may be visually differentiated, so as toindicate to the user 101 that the cells are selectable. For example,upon the user 101 selecting the multi-select option 734 at stage 700B,the user interface may transition to stage 700C. At stage 700C, cellsthat are selectable by the user 101 for information content retrievalmay be visually differentiated (i.e., made conspicuous). For example, ata suitable location within each selectable cell, an icon or ageometrical shape such as, for example, a check box 756 (e.g., ageometrical shape with a hollow center) may be displayed, signaling thatthe cell is selectable by the user 101 for information contentretrieval. The user 101 may select a cell by clicking or tapping on thecorresponding check box 756, or by making any suitable motion/actionwith or without an input device. Upon the user 101 making a selection,the check box 756 may be filled with a color, and/or a suitable marking(e.g., a check mark) may be placed within the check box 756. Forexample, the check box 754 indicates that the cell 738 has beenselected, via a check mark included in the check box 754. Similarly,additional cells near the cell 738 (i.e., cells including SALES YTD,SALES YTD LY, SALES/SQ. FT. YTD LY information) are shown to have beenselected by the user 101. Other suitable graphical user interface (GUI)elements may also be used to indicate that a portion of the informationcard 472, such as a cell, is available for selection, or that a portionor cell has been selected by a user 101. Once the user 101 has selectedall the desired cells, the user 101 may select a selection completebutton 758 at stage 700C.

When the user 101 has made all the selections (e.g., by selecting theselection complete button 758), the user interface may transition tostage 700D. Particularly, the user interface may transition back to thatof the typing-enabled application 220 the user 101 has been typing in.The user 101 may be allowed to paste the information content 772pertaining to the selected cell(s) into any location within the textfield, by opening up a text menu (e.g., text editing menu 552) wheneverand wherever the user desires. For example, upon the user interfacetransitioning to that of the typing-enabled application 220, the user101 may add to, modify, or delete the text that has been typed, beforepasting the information content 772 into a desired location. Therefore,the user 101 may control the timing of placing the information content772 into the text field, and also the exact location at which theinformation content 772 is placed. Alternatively, upon the user 101completing the cell selection(s) (e.g., by selecting the selectioncomplete button 758) and the user interface transitioning back to thatof the typing-enabled application 220, the information content 772pertaining to the selected cells may be automatically inserted into alocation within the text field of the typing-enabled application 220.For example, the information content 772 may be inserted immediatelyafter or below the text that led to the retrieval of the informationcard 472 (e.g., “Dorchester” 412). As another example, the informationcontent 772 may be inserted at a location at which the user 101 left atext cursor while previously typing in the text field. If multiple cellshave been selected by the user 101 at stage 700C, the text stringsassociated with the selected cells that are pasted onto the text fieldmay be separated from each other by punctuation marks (e.g., semicolons)or spaces, or may be placed in separate lines, or may otherwise bearranged visually, to allow the user 101 or message recipient toidentify each text string clearly.

Once the information card(s) and/or text strings associated with cellsof the information card(s) have been inserted into the text field asdiscussed in reference to FIGS. 5 and 7 , the user 101 may be presentedwith or may activate the smart keyboard 240 again, allowing the user 101to further modify the text, search for additional information cards, andcopy/paste information card(s) and/or text string associated withindividual cells at appropriate places within the text field. In otherwords, the processes illustrated in FIGS. 5 and 7 may be repeated by theuser 101 until all desired information has been viewed and/or includedin the text field of the typing-enabled application 220.

FIG. 8 shows a flowchart illustrating an exemplary method 800 ofinserting information content into a text field of a typing-enabledapplication based on a selection of one or more sections in aninformation card, according to one aspect of the present disclosure.Notably, method 800 may be performed by the smart keyboard extension 114in conjunction with the application 112 and/or the typing-enabledapplication 220, and may represent a process that may be performedsubsequent to method 300 of retrieving and displaying an informationcard to the user 101.

At step 810, the application 112 may detect user interaction with a cellin an information card. As discussed above, the detected userinteraction may be, for example, the user 101 clicking, tapping, ortapping and holding for a predetermined time period on a cell in aninformation card. The detected user interaction may indicate that theuser 101 has selected the cell. At step 815, the application 112 maydisplay a selection menu proximate the cell. As illustrated in FIG. 7 ,the selection menu 732 may allow the user 101 to either selectadditional cells in the information card (e.g., via the multi-selectoption 734) or copy the text string associated with the selected cell(e.g., via the copy text option 736). If the user 101 selects themulti-select option 734, the method 800 proceeds to step 820. If theuser 101 selects the copy text option 736, the method 800 proceeds tostep 850.

At step 820, the application 112 may receive a user input to selectadditional cells in the information card. The user input may comprisethe user 101 selecting the multi-select option 734 in the selection menu732. At step 825, upon receiving the user input to select additionalcells in the information card, the application 112 may determine cellsin the information card that are selectable by the user 101. In general,cells containing data suitable to be represented in the “{object name}is {value}” format may be determined to be selectable. On the otherhand, cells that contain linkings, such as the cells enclosing variousbuttons in the bottom portion of the header of the information card(i.e., the hatched portion of the information card shown in FIG. 7 ),may be determined to be not selectable. At step 830, the application 112may visually differentiate the selectable cells, enabling the user 101to make a selection. The manner in which the cells may be visuallydifferentiated was discussed above in reference to FIG. 7 . At step 835,the application 112 may receive user's selection of one or more of thecells. As explained above, the user 101 may indicate that all thedesired cells have been selected by, for example, selecting “Done” shownin FIG. 7 . At step 840, the application 112 may retrieve one or moretext strings associated with the selected one or more cells. At step845, the application 112, in conjunction with the typing-enabledapplication 220, may insert the one or more text strings proximate thetext typed by the user 101 that led to the retrieval of the informationcard (e.g., the text “Dorchester” 412 in FIG. 7 ). The application 112may transmit or supply instructions, commands, or appropriate softwarecodes to the typing-enabled application 220 to insert the one or moretext strings. Further, in lieu of automatically inserting the textstrings proximate the typed text, the retrieved text strings may bemerely saved in a temporary storage such as, for example, a clipboard.Then, the user 101 may have an option to open up a text editing menu ata desired location within the text field, and paste the text strings atthe desired location by selecting a paste option in the text editingmenu.

Alternatively, at step 850, the application 112 may receive a user inputto copy the cell that was selected by the user 101 at step 810. The userinput may comprise the user 101 selecting the copy text option 736 inthe selection menu 732. At step 855, the application 112 may save a textstring associated with the cell in a temporary storage (e.g.,clipboard). At step 860, the typing-enabled application 220 may receivea user input to open a text editing menu 552 at a location within thetext field. As discussed above in reference to FIG. 5 , the user 101 mayright-click on a mouse, or make any suitable motion/action, to open thetext editing menu 552 at a particular, user-desired location within thetext field. The location may be indicated by a text cursor, or any othersuitable marker or symbol placed within the text field. At step 865, thetyping-enabled application 220 may display the text editing menu 552 atthe location within the text field. At step 870, the typing-enabledapplication 220 may receive a user input to paste the text string intothe text field. At step 875, the typing-enabled application 220 mayinsert the text string at the location within the text field. Asdiscussed above, the location at which the text string is inserted maybe selected by the user in previous step 860, for example by the user101 opening a text editing menu 552 at a particular location within thetext field. For example, the user 101 may right-click, tap, or tap andhold at a desired location within the text field, at which a text cursormay appear upon the user action (i.e., right-click, tap, or tap andhold). The text editing menu 552 may open up proximate the text cursor,as shown in FIG. 5 . The text string may be inserted at the location ofthe text cursor within the text field.

Embodiments of the present disclosure and all of the functionaloperations described in this disclosure can be implemented in digitalelectronic circuitry, or in computer software, firmware, or hardware,including the structures disclosed in this disclosure and theirstructural equivalents, or in combinations of one or more of them.Embodiments of the present disclosure can be implemented as one or morecomputer program products, e.g., one or more modules of computer programinstructions encoded on a computer readable medium for execution by, orto control the operation of, data processing apparatus. The computerreadable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them. The term “data processing apparatus” encompassesall apparatus, devices, and machines for processing data, including byway of example a programmable processor, a computer, or multipleprocessors or computers. The apparatus can include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, or acombination of one or more of them. A propagated signal is anartificially generated signal, e.g., a machine-generated electrical,optical, or electromagnetic signal that is generated to encodeinformation for transmission to suitable receiver apparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this disclosure can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a tablet computer, a mobile telephone, a personaldigital assistant (PDA), a mobile audio player, a Global PositioningSystem (GPS) receiver, to name just a few. Computer readable mediasuitable for storing computer program instructions and data include allforms of non-volatile memory, media and memory devices, including by wayof example semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto optical disks; and CD ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, embodiments of the presentdisclosure can be implemented on a computer having a display device,e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor,for displaying information to the user and a keyboard and a pointingdevice, e.g., a mouse or a trackball, by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback, e.g., visual feedback,auditory feedback, or tactile feedback; and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

Embodiments of the present disclosure can be implemented in a computingsystem that includes a back end component, e.g., as a data server, orthat includes a middleware component, e.g., an application server, orthat includes a front end component, e.g., a client computer having agraphical user interface or a Web browser through which a user caninteract with an implementation of the invention, or any combination ofone or more such back end, middleware, or front end components. Thecomponents of the system can be interconnected by any form or medium ofdigital data communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this disclosure contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularembodiments of the invention. Certain features that are described in thecontext of separate embodiments can also be implemented in combinationin a single embodiment. Conversely, various features that are describedin the context of a single embodiment can also be implemented inmultiple embodiments separately or in any suitable subcombination.Moreover, although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

In each instance where an HTML file is mentioned, other file types orformats may be substituted. For instance, an HTML file may be replacedby an XML, JSON, plain text, or other types of files. Moreover, where atable or hash table is mentioned, other data structures (such asspreadsheets, relational databases, or structured files) may be used.

What is claimed is:
 1. A computer-implemented method of retrievingrelevant information content while typing, the method comprising:identifying, by an application extension of a first application, textbeing entered by a user into a text field of a second application;determining, by the application extension, one or more keywords in akeyword list that match the text; presenting, by the applicationextension, the one or more keywords; receiving, by the applicationextension, a selection of a keyword from the one or more keywords;generating, by the first application, a request comprising the selectedkeyword; transmitting, by the first application, the request to a serverconfigured to generate information cards or executing, by the firstapplication, the request against a local storage storing informationcards; receiving, by the first application, an information card relatedto the selected keyword in response to the request; presenting, by thefirst application, the information card; and inserting, by the secondapplication, information content associated with the information cardinto the text field.
 2. The computer-implemented method of claim 1,wherein the text comprises a term, a portion of a term, multiple terms,or a combination thereof.
 3. The computer-implemented method of claim 1,the second application comprises a typing-enabled application.
 4. Thecomputer-implemented method of claim 1, wherein the one or more keywordsare presented at a location within a keyboard enabled by the applicationextension.
 5. The computer-implemented method of claim 1, wherein theinformation content associated with the information card is an image ofthe information card.
 6. The computer-implemented method of claim 1,wherein the information content associated with the information card isa text string associated with the information card.
 7. Thecomputer-implemented method of claim 1, further comprising: converting,by the first application, the information card from an interactiveformat to an image format.
 8. The computer-implemented method of claim1, wherein the information content inserted into the text field replacesthe text entered by the user.
 9. The computer-implemented method ofclaim 1, further comprising: displaying, by the first application, afirst option to attach the information card; and receiving, by the firstapplication, a selection of the first option, wherein the informationcontent is inserted into the text field upon receiving the selection ofthe first option.
 10. The computer-implemented method of claim 1,further comprising: displaying, by the first application, a secondoption to copy the information card; receiving, by the firstapplication, a selection of the second option; and upon receiving theselection of the second option, saving, by the first application, theinformation content in a temporary storage.
 11. The computer-implementedmethod of claim 10, further comprising: receiving, by the secondapplication, a user input to paste the information card to auser-selected location within the text field, wherein the informationcontent is inserted into the text field upon receiving the user input topaste the information card.
 12. The computer-implemented method of claim10, wherein the information content saved in the temporary storage is inan image format.
 13. The computer-implemented method of claim 1, furthercomprising: detecting, by the first application, a user interaction witha cell in the information card; upon detecting the user interaction,displaying, by the first application, a third option to copy the cell;and receiving, by the first application, a selection of the thirdoption, wherein the information content associated with the informationcard is inserted into the text field upon receiving the selection of thethird option, the information content being associated with the cell.14. The computer-implemented method of claim 1, further comprising:detecting, by the first application, a user interaction with a cell inthe information card; upon detecting the user interaction, displaying,by the first application, a third option to select multiple cells in theinformation card; receiving, by the first application, a selection ofthe third option; visually differentiating, by the first application,cells in the information card that are selectable by the user.
 15. Thecomputer-implemented method of claim 14, further comprising: receiving,by the first application, a selection of a plurality of cells from theselectable cells, wherein the information content associated with theinformation card is inserted into the text field upon receiving theselection of the plurality of cells, the information content comprisinga plurality of text strings associated with the plurality of cells. 16.The computer-implemented method of claim 1, wherein inserting, by thesecond application, information content associated with the informationcard into the text field comprises: converting, by the secondapplication, the text entered by the user to a hyperlink associated withthe information card.
 17. The computer-implemented method of claim 1,wherein the information content associated with the information card isa link associated with the information card.
 18. A system comprising:one or more processors; and one or more computer-readable mediacomprising instructions that, when executed by the one or moreprocessors, cause the one or more processors to perform operations forretrieving relevant information content while typing, the operationscomprising: identifying, by an application extension of a firstapplication, text being entered by a user into a text field of a secondapplication; determining, by the application extension, one or morekeywords in a keyword list that match the text; presenting, by theapplication extension, the one or more keywords; receiving, by theapplication extension, a selection of a keyword from the one or morekeywords; generating, by the first application, a request comprising theselected keyword; transmitting, by the first application, the request toa server configured to generate information cards or executing, by thefirst application, the request against a local storage storinginformation cards; receiving, by the first application, an informationcard related to the selected keyword in response to the request;presenting, by the first application, the information card; andinserting, by the second application, information content associatedwith the information card into the text field.
 19. One or morenon-transitory computer-readable media storing instructions that, whenexecuted by one or more processors, cause the one or more processors toperform operations for retrieving relevant information content whiletyping, the operations comprising: identifying, by an applicationextension of a first application, text being entered by a user into atext field of a second application; determining, by the applicationextension, one or more keywords in a keyword list that match the text;presenting, by the application extension, the one or more keywords;receiving, by the application extension, a selection of a keyword fromthe one or more keywords; generating, by the first application, arequest comprising the selected keyword; transmitting, by the firstapplication, the request to a server configured to generate informationcards or executing, by the first application, the request against alocal storage storing information cards; receiving, by the firstapplication, an information card related to the selected keyword inresponse to the request; presenting, by the first application, theinformation card; and inserting, by the second application, informationcontent associated with the information card into the text field.